#include "msgQueue.h"
#include "tools.h"

//根据提供的key创建或获取消息队列
int getMsg(key_t key)
{
	int msgId = msgget(key,IPC_CREAT|0644);

	if(0 > msgId)
	{
		printf("进程:%d,msgget:%m\n",getpid());
		return -1;
	}

	return msgId;
}

//以阻塞方式发送消息
void sendMsg(int msgId,const void* buf,size_t size)
{
	if(0 > msgsnd(msgId,buf,size-4,0))
		error("msgsnd");
}

//以阻塞方式接收消息
void receiveMsg(int msgId,void* buf,size_t size)
{
	if(0 > msgrcv(msgId,buf,size,*(long*)buf,0))
		error("msgrcv");
}

//删除消息队列
void deleteMsg(int msgId)
{
	if(msgctl(msgId,IPC_RMID,NULL))
		printf("进程:%d,msgctl:%m\n",getpid());
}
